package base

import (
	"com/study/util"
	"fmt"
	"strconv"
	"unsafe"
)

func String() {
	// 字符串 字符串被赋值之后是不可变的
	// string 底层是 byte数组
	var str string = "123456!"
	fmt.Printf("%T: %d \n", str, unsafe.Sizeof(str))
	// 输出特殊字符 使用反引号 `
	fmt.Println(`\n\t"""""''''"`)

	util.PrnType(str)
	runeStr := []rune(str)
	util.PrnType(runeStr)
	// 不能处理汉字，因为汉字占 8 个字节
	arrStr := []byte(str)
	util.PrnType(arrStr)

	// 字符串默认值为 ""
	var strDefault string
	util.PrnType(strDefault)

	// 类型转换
	// 转换为 string 类型
	fmt.Println(fmt.Sprint(true))
	fmt.Println(strconv.FormatBool(false))
	// string 转 bool, 第一个是返回值，第二个是错误信息
	bool9, err := strconv.ParseBool(strDefault)
	// 使用 _ 忽略错误信息
	bool9, _ = strconv.ParseBool(strDefault)
	fmt.Println(bool9)
	fmt.Println(err)
}
